package models

// CardListQueryParams 卡片列表查询参数
type CardListQueryParams struct {
	PageIndex      int    `json:"pageIndex"`      // 页码
	PageSize       int    `json:"pageSize"`       // 每页数量
	MatrixAccount  string `json:"matrixAccount"`  // 矩阵账户
	CardBin        string `json:"cardBin"`        // 卡bin，多个卡bin用逗号分隔
	CreatedAtStart string `json:"createdAtStart"` // 起始时间
	CreatedAtEnd   string `json:"createdAtEnd"`   // 结束时间
	CardType       string `json:"cardType"`       // 卡类型：share/recharge
	CardFormFactor string `json:"cardFormFactor"` // 卡介质：virtual_card/physical_card
	CardStatus     string `json:"cardStatus"`     // 卡状态
}

// CardInfo 卡信息
type CardInfo struct {
	CardBalance         float64  `json:"cardBalance"`         // 卡余额
	CardCurrency        string   `json:"cardCurrency"`        // 卡币种
	CardID              string   `json:"cardId"`              // 卡ID
	CardScheme          string   `json:"cardScheme"`          // 卡组织
	CardStatus          string   `json:"cardStatus"`          // 卡状态
	CardType            string   `json:"cardType"`            // 卡类型
	CreatedAt           string   `json:"createdAt"`           // 创建时间
	MatrixAccount       string   `json:"matrixAccount"`       // Matrix账户ID
	MemberID            string   `json:"memberId"`            // 会员号
	MaskCardNo          string   `json:"maskCardNo"`          // 掩码卡号
	Nickname            string   `json:"nickname"`            // 卡昵称
	CardFormFactor      string   `json:"cardFormFactor"`      // 卡介质
	TotalTransferAmount float64  `json:"totalTransferAmount"` // 总转账金额
	TransactionLimit    *float64 `json:"transactionLimit,omitempty"`
}

// CardListResponse 卡列表查询响应
type CardListResponse struct {
	BaseResponse
	Data      []CardInfo `json:"data"`      // 卡信息列表
	PageIndex int64      `json:"pageIndex"` // 当前页
	PageSize  int64      `json:"pageSize"`  // 分页大小
	Total     int64      `json:"total"`     // 总记录数
}

// CVVInfo 卡CVV信息
type CVVInfo struct {
	CardID         string `json:"cardId"`         // 卡ID
	CardNo         string `json:"cardNo"`         // 卡号
	CVV            string `json:"cvv"`            // CVV
	ExpirationDate string `json:"expirationDate"` // 过期日期
}

// CVVResponse 卡CVV查询响应
type CVVResponse struct {
	BaseResponse
	Data CVVInfo `json:"data"` // 卡CVV信息
}

// CardDetailInfo 卡详细信息
// 对应 getCardDetail 接口返回的 data 字段
// 字段顺序和类型参考接口文档和示例
//
type CardDetailInfo struct {
	BillingAddress          string  `json:"billingAddress"`
	BillingAddressUpdatable string  `json:"billingAddressUpdatable"`
	BillingCity             string  `json:"billingCity"`
	BillingCountry          string  `json:"billingCountry"`
	BillingPostalCode       string  `json:"billingPostalCode"`
	BillingState            string  `json:"billingState"`
	CardBalance             float64 `json:"cardBalance"`
	CardCurrency            string  `json:"cardCurrency"`
	CardID                  string  `json:"cardId"`
	CardNo                  string  `json:"cardNo"`
	CardScheme              string  `json:"cardScheme"`
	CardStatus              string  `json:"cardStatus"`
	CardType                string  `json:"cardType"`
	CreatedAt               string  `json:"createdAt"`
	Email                   string  `json:"email"`
	ExpirationDate          string  `json:"expirationDate"`
	FirstName               string  `json:"firstName"`
	LastName                string  `json:"lastName"`
	MaskCardNo              string  `json:"maskCardNo"`
	MatrixAccount           string  `json:"matrixAccount"`
	MemberID                string  `json:"memberId"`
	Mobile                  string  `json:"mobile"`
	MobilePrefix            string  `json:"mobilePrefix"`
	Nationality             string  `json:"nationality"`
	Nickname                string  `json:"nickname"`
	TransactionLimitType    string  `json:"transactionLimitType"`
	CardFormFactor          string  `json:"cardFormFactor"`
	CardholderID            string  `json:"cardholderId"`
}

// CardDetailResponse 卡详细信息查询响应
// code/msg/data 格式
//
type CardDetailResponse struct {
	BaseResponse
	Data CardDetailInfo `json:"data"`
}

// OpenCardRequest 单卡开卡请求参数
type OpenCardRequest struct {
	UserID               int64  `json:"userId"` // 用户ID
	MemberID             string `json:"memberId,omitempty"`
	MatrixAccount        string `json:"matrixAccount,omitempty"`
	CardBin              string `json:"cardBin"`
	CardCurrency         string `json:"cardCurrency"`
	CardExpirationDate   int    `json:"cardExpirationDate,omitempty"`
	CardScheme           string `json:"cardScheme,omitempty"`
	CardType             string `json:"cardType"`
	CardFormFactor       string `json:"cardFormFactor,omitempty"`
	CardholderID         string `json:"cardholderId,omitempty"`
	CardDesignID         string `json:"cardDesignId,omitempty"`
	CardLogoID           string `json:"cardLogoId,omitempty"`
	MaxOnDaily           int    `json:"maxOnDaily,omitempty"`
	MaxOnMonthly         int    `json:"maxOnMonthly,omitempty"`
	MaxOnPercent         int    `json:"maxOnPercent,omitempty"`
	RechargeAmount       string `json:"rechargeAmount,omitempty"`
	RequestID            string `json:"requestId"`
	TransactionLimit     string `json:"transactionLimit,omitempty"`
	TransactionLimitType string `json:"transactionLimitType,omitempty"`
	AccountID            string `json:"accountId,omitempty"`
	ArrivalAmount        string `json:"arrivalAmount,omitempty"`
	RecipientID          string `json:"recipientId,omitempty"`
}
